package com.xuelang.pipeline.artifact.domain.resource.service;

import com.xuelang.pipeline.artifact.client.common.result.PageRecord;
import com.xuelang.pipeline.artifact.client.resource.dto.ArtifactProxyQuery;
import com.xuelang.pipeline.artifact.domain.resource.ArtifactProxy;

import java.util.List;

/**
 * 制品仓库代理领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface ArtifactProxyDomainService {
    /**
     * 获取制品仓库代理列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param artifactProxyQuery
     * @return
     */
    PageRecord<ArtifactProxy> pageList(long currentPage, long pageSize, ArtifactProxyQuery artifactProxyQuery);
    /**
     * 获取制品仓库代理列表，有过滤条件
     *
     * @param artifactProxyQuery
     * @return
     */
    List<ArtifactProxy> list(ArtifactProxyQuery artifactProxyQuery);

    /**
     * 新增制品仓库代理
     *
     * @param artifactProxy
     * @return
     */
    Boolean save(ArtifactProxy artifactProxy);

    /**
     * 更新制品仓库代理
     *
     * @param artifactProxy
     * @return
     */
    Boolean update(ArtifactProxy artifactProxy);
    /**
     * 删除制品仓库代理
     *
     * @param artifactProxyUuid
     * @return
     */
    Boolean delete(String artifactProxyUuid);
    /**
     * 查询制品仓库代理
     *
     * @param artifactProxyUuid
     * @return
     */
    ArtifactProxy query(String artifactProxyUuid);

    /**
     * 删除制品仓库代理-通过分组仓库uuid
     *
     * @param artifactUuid
     * @return
     */
    Boolean deleteByGroupArtifactUuid(String artifactUuid);

    /**
     * 是否存在当前代理仓库的绑定
     *
     * @param groupArtifactUuid
     * @param sourceArtifactUuid
     * @return
     */
    Boolean existsCurrentProxy(String groupArtifactUuid, String sourceArtifactUuid);
}
